﻿
var revXmlUri = 'file:///E:/flash/tcodes/tool/test.xml';
if(FLfile.exists(revXmlUri)){
	parseXmlStr(FLfile.read(revXmlUri));
}

//解析文件中的xml字符串
function parseXmlStr(xmlStr){
	//去除xml字符串开头的<?xml version="1.0"?>，因为jsfl解析字符中有xml字串会报错。
	xmlStr = xmlStr.replace(/<\?xml.*\?>/g,"");
	
	var revXml =new XML(xmlStr);
	
	var revs = [];
	var qName = new QName('', "entry");
	var list = revXml.descendants(qName);
	for(i = 0; i<list.length(); i++){
		var rev = getRev(getFileRevision(list[i]), getFileBasePath(list[i]));
		if(rev == undefined){
			rev = {r:getFileRevision(list[i]), p:getFileBasePath(list[i]), f:getFileName(list[i])};
			revs.push(rev);
		}else{
			rev.f += ',' + getFileName(list[i]);
		}
	}
	
	//输出压缩后的信息，格式：[revision] [basePath] [file1Name,file2Name,...]
	var finalStr = '';
	for(i = 0; i<revs.length; i++){
		finalStr += (revs[i].r + '|' + revs[i].p + '|' + revs[i].f);
		
		if(i<revs.length-1)finalStr += '\n';
	}
	
	trace(finalStr);
	
	var builded = FLfile.write(revXmlUri.substring(0, revXmlUri.lastIndexOf('.')) + '.txt', finalStr);
	if(!builded){
		alert('创建压缩文本文件失败。');
	}
	
	function getFileBasePath(entry){
		var p = String(entry.@path);
		var b = p.slice(0, p.indexOf('\\')>0?p.lastIndexOf('\\'):0);
		return b;
	}
	
	function getFileRevision(entry){
		return Number(entry..@revision[0]);
	}
	
	function getFileName(entry){
		var p = String(entry.@path);
		var b = p.slice(p.indexOf('\\')>=0?p.lastIndexOf('\\')+1:0);
		return b;
	}
	
	function getRev(r, p){
		for(var j=0; j<revs.length; j++){
			if(revs[j].r == r && revs[j].p == p){
				return revs[j];
			}
		}
	}
}

function trace(str){
	//fl.outputPanel.clear();
	fl.trace(str);
}